#ifndef _COMMON_H
#define _COMMON_H

#include <assert.h>

#include <time.h>
#include <sys/time.h>    //gettimeofday 
#include <sys/stat.h>    //定义在打开和创建文件时用到的一些符号常量
#include <unistd.h>      // linux  read  write
#include <string.h>
#include <stdio.h>       // linux input output 
#include <stdlib.h>      //standard library 
#include <stdint.h>
#include <signal.h>      
#include <math.h>
#include <malloc.h>
#include <fcntl.h>       //定义 open,fcntl函数原型
#include <error.h>  

#include <sys/types.h>    //off_t
#include <sys/socket.h>   //socket ,blind ,listen ,accept,...
#include <netinet/in.h>   //sockaddr_in ,struct sockaddr,...
#include <arpa/inet.h>    //inet_addr ,inet_ntoa ,htonl,...
#include <net/if.h>       // struct ifreq ,struct ifconf
#include <sys/ioctl.h>    //setsockopt
#include <pthread.h>      //pthread_create
#include <netinet/tcp.h>  //
#include <sys/resource.h> 

#include <rdma/rdma_cma.h>
#include "config.h"

void die(const char *reason);
DataNode* read_config_Node(const char *fname);
void get_ipaddr(char *ip,int len);
int current_node(DataNode* nodes);
int get_nodeid(struct sockaddr* addr,DataNode* nodes);
int connect_try(char *ip,unsigned short port);
int server_bind(unsigned short port,int backlog);
int server_accept(int listen_sock);
ssize_t send_bytes(int sockfd,char *buf,size_t nbytes);
ssize_t recv_bytes(int sockfd,char *buf,size_t nbytes);
void new_strtok(char string[],char divider,char result[]);
void trnsfm_char_to_int(char* char_data,long long *data);
void gene_radm_buff(char* buff,int len);
char* convert_id_to_string(long long id);
char* convert_int_to_string(int src);
long getcurrent_time();
#endif